package org.lanyu.springainovel.common.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * 通用异步任务实体类
 */
@Data
@TableName("async_task")
public class AsyncTask {

    /**
     * 任务ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 任务类型 (NOVEL_OUTLINE, BOOK_ANALYSIS, etc.)
     */
    @TableField("task_type")
    private String taskType;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 任务状态 (PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED)
     */
    private String status;

    /**
     * 进度百分比 (0-100)
     */
    private Integer progress;

    /**
     * 当前步骤描述
     */
    @TableField("current_step")
    private String currentStep;

    /**
     * 任务参数 (JSON格式)
     */
    @TableField("task_params")
    private String taskParams;

    /**
     * 任务结果 (JSON格式)
     */
    @TableField("task_result")
    private String taskResult;

    /**
     * 错误信息
     */
    @TableField("error_message")
    private String errorMessage;

    /**
     * 开始时间
     */
    @TableField("start_time")
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @TableField("end_time")
    private LocalDateTime endTime;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
}